package com.team20.map_demo.controller;

import com.team20.map_demo.domain.User;
import com.team20.map_demo.service.UserService;
import io.micrometer.core.instrument.util.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpSession;
import java.util.HashMap;
import java.util.Map;

@Controller
@RequestMapping("/user")
public class UserController {
    @Autowired
    private UserService userService;

    /*@RequestMapping("/login")
    public String login(String userName, String userPassword, Model model) {
        String msg = null;
        if (userService.getUserByNameAndPwd(userName, userPassword) == null) {
            msg = "用户名或者密码错误";
            model.addAttribute("msg", msg);
            return "user_login";
        }
        else {
            msg = "登录成功";
            model.addAttribute("msg", msg);
            return "user_access";
        }
    }*/
    /*@RequestMapping("/login")
    public String login(Model model, String userName, String userPassword, HttpSession session){
        User user = userService.findUserByName(userName);
        String msg = null;
        if(userName == null) {
            return "user_login";
        } else if(user == null){
            msg = "用户名或密码错误";
            model.addAttribute("msg",msg);
            return "user_login";
        }else {
            String pwd = user.getPassword();
            if (userPassword!=null && pwd.equals(userPassword)){
                msg = "登录成功";
                model.addAttribute("msg",msg);
                session.setAttribute("one_login",user);
                return "user_page";
            }else{
                msg = "用户名或密码错误";
                model.addAttribute("msg",msg);
                return "user_login";
            }
        }
    }*/

    /*@RequestMapping("/register")
    public String register(Model model, User user, String passwd) {
        String msg = null;
        if(user.getName() == null) {
            return "user_register";
        } else if (StringUtils.isBlank(user.getName())) {
            msg = "用户名不能为空";
            model.addAttribute("msg", msg);
            return "user_register";
        } else if (userService.findUserByName(user.getName()) != null) {
            msg = "用户已存在";
            model.addAttribute("msg", msg);
            return "user_register";
        } else if (StringUtils.isBlank(user.getPassword())) {
            msg = "密码不能为空";
            model.addAttribute("msg", msg);
            return "user_register";
        } else if (StringUtils.isBlank(passwd) || !passwd.equals(user.getPassword())) {
            msg = "两次密码输入不一致";
            model.addAttribute("msg", msg);
            return "user_register";
        } else {
            userService.saveUser(user);
            msg = "注册成功,立即登录";
            model.addAttribute("msg", msg);
            return "redirect:/user/login";
        }
    }*/

    @RequestMapping("/login")
    public String login() {
        return "user_login";
    }

    @RequestMapping(value = "/api/login", method = RequestMethod.POST)
    @ResponseBody
    public Map apiLogin(String userName, String userPassword, HttpSession session){
        User user = userService.findUserByName(userName);
        String msg = null;
        Map<String, Object> rs = new HashMap<>();

        if(user == null){
            msg = "用户名或密码错误";
            rs.put("msg", msg);
            rs.put("ok", false);
        } else {
            String pwd = user.getPassword();
            if (userPassword != null && pwd.equals(userPassword)){
                msg = "登录成功";
                rs.put("msg", msg);
                rs.put("ok", true);
                session.setAttribute("one_login",user);
            } else {
                msg = "用户名或密码错误";
                rs.put("msg", msg);
                rs.put("ok", false);
            }
        }
        return rs;
    }

    @RequestMapping("/register")
    public String register(){
        return "/user_register";
    }

    @RequestMapping(value = "/api/register", method = RequestMethod.POST)
    @ResponseBody
    public Map apiRegister(User user, String passwd) {
        String msg = null;
        Map<String, Object> rs = new HashMap<>();

        if (StringUtils.isBlank(user.getName())) {
            msg = "用户名不能为空";
            rs.put("msg", msg);
            rs.put("ok", false);
        } else if (userService.findUserByName(user.getName()) != null) {
            msg = "用户已存在";
            rs.put("msg", msg);
            rs.put("ok", false);
        } else if (StringUtils.isBlank(user.getPassword())) {
            msg = "密码不能为空";
            rs.put("msg", msg);
            rs.put("ok", false);
        } else if (StringUtils.isBlank(passwd) || !passwd.equals(user.getPassword())) {
            msg = "两次密码输入不一致";
            rs.put("msg", msg);
            rs.put("ok", false);
        } else {
            userService.saveUser(user);
            msg = "注册成功,立即登录";
            rs.put("msg", msg);
            rs.put("ok", true);
        }
        return rs;
    }

    @RequestMapping("/update")
    public String EditUser(String id, Model model){
        User user = userService.findUserByPrimaryKey(id);
        model.addAttribute("user",user);
        return "user_register";
    }
}